(1) Field of the Invention
The invention relates to addition of a new object type to operating systems. More specifically, the invention relates to addition of an object type to standard operating systems wherein the object type is a file which, rather than having physical data associated therewith, has an associated rule which is used to generate the data when the object type is accessed.
(2) Prior Art
Operating systems are generally well-known in the art. The operating system is responsible for controlling the allocation usage of hardware resources throughout the computer system. Simple popular operating systems exist including MS-DOS.TM., the Macintosh.TM. OS, OS/2.TM., Windows.TM., and UNIX.TM.. The kernel is the core of an operating system which is responsible for the allocation of system resources. A typical kernel for a UNIX.TM. file server contains standard code known as the UNIX.TM. File System (UFS) which is coupled to a disk driver for providing block access to the bulk storage unit. The UFS also interacts with standard file sharing software. The file sharing software provides files to an Ethernet driver which then drives the files over an Ethernet connector to the target or client system. The target or client operating system's kernel typically has these same components.
The UFS translates requests for files from an application program into low level, sector-oriented tasks which can be understood by the drivers. The file server is a device that stores, manages, and maintains files on a local area network (LAN) allowing target or client machines to access files through the server machine. Traditional files are a collection of physical data which requires storage space equal to the file size. Accordingly, traditional files are limited by two constraints, (i) the amount of bulk storage available on the server, and (ii) the number of address bits allotted to user address space. In many current systems, the second criterion limits file size to two gigabytes. However, as a practical matter, very few systems accommodate two gigabytes of physical storage. Moreover, traditional code preparation methods make writing and debugging of code of such a large volume impractical. Difficulties in creating very large files create certain problems specific to a test environment.
In the test environment, it is desirable to stress the item under test, be it hardware or software, in terms of speed, volume and/or sequence of operations to be performed. In view of the fact that files of large size, for example, greater than one gigabyte, are difficult to create and require large amounts of physical storage, it has been difficult or impossible to test with any reliability the ability of file servers and file handlers to handle such large files, much less paging and memory mapping and other manipulation of such files. Moreover, as instruction sets become larger, it becomes increasingly difficult to test all the possible combinations and sequences of instructions such that a systems designer can be more than reasonably sure that the system will operate properly given any series of instructions from the instruction set.
Therefore, it would be desirable to develop a system and method whereby large files can be effected without the need for vast bulk storage facilities or the time and effort required to code and debug large blocks of executable code. Moreover, it would be desirable if the files created readily interface with existing architectures and operating systems.